package br.ufrj.dcc.geti.riskanalytics.simulator;

/**
 * Log Normal 0-1 distribution
 *  
 * @author Fabio
 */
public class LogNormal extends Sampleble {
	
	
	private double media = 0;
	private double desvioPadrao = 0;
	
	public LogNormal(double media, double desvioPadrao) {
		this.media = media;
		this.desvioPadrao = desvioPadrao;
	}
	
	public LogNormal() {}
		
	public double getSample() {
		double x = r.nextDouble(); 
		double pi = Math.PI;
		
		double primeiroProduto = 1/(x * this.desvioPadrao * Math.sqrt(2 * pi));
		double potencia = - (Math.pow((Math.log(x) - this.media), 2)) / (2 * Math.pow(this.desvioPadrao, 2)); 
		return primeiroProduto * Math.exp(potencia);
	}
	
	public double getSample(double x, double media, double desvioPadrao) {		 
		double pi = Math.PI;
		
		double primeiroProduto = 1/(x * desvioPadrao * Math.sqrt(2 * pi));
		double potencia = - (Math.pow((Math.log(x) - media), 2)) / (2 * Math.pow(desvioPadrao, 2)); 
		return primeiroProduto * Math.exp(potencia);
	}

	public void setMedia(double media) {
		this.media = media;
	}

	public void setDesvioPadrao(double desvioPadrao) {
		this.desvioPadrao = desvioPadrao;
	}
	
	
}
